Macrodef Task: Reusable Task Macro তৈরি করা

Java Technologies - অ্যাপাচি অ্যান্ট টাস্কস (Apache ANT Tasks) Macros এবং Script Task |
146
146

Apache Ant-এ <macrodef> টাস্কটি একটি খুব শক্তিশালী টুল যা আপনাকে পুনঃব্যবহারযোগ্য টাস্ক ম্যাক্রো তৈরি করতে সাহায্য করে। এটি আপনাকে একাধিক টাস্কের সেট বা ব্লক তৈরি করার সুযোগ দেয়, যা পরবর্তীতে Ant বিল্ড স্ক্রিপ্টে বিভিন্ন জায়গায় পুনরায় ব্যবহার করা যায়।

Macrodef টাস্ক ব্যবহার করে আপনি একাধিক টাস্ককে একটি কাস্টম টাস্কের মতো গ্রুপ করতে পারেন এবং তারপর সেই টাস্কটি পুনরায় অন্য টার্গেট বা টাস্কে ব্যবহার করতে পারেন। এটি বিশেষভাবে উপকারী যখন একাধিক টার্গেট বা স্ক্রিপ্টে একই ধরনের কার্যক্রম বা টাস্ক চালাতে হয়।

Macrodef Task এর Syntax

<macrodef name="macro_name">
    <attribute name="param1" />
    <attribute name="param2" />
    <sequential>
        <!-- Define tasks that make up the macro -->
    </sequential>
</macrodef>
  • name: এটি ম্যাক্রোর নাম যা আপনি তৈরি করতে চান।
  • attribute: ম্যাক্রোর জন্য প্যারামিটার (অথবা ইনপুট মান) তৈরি করা হয়।
  • sequential: এটি একটি ব্লক যা একাধিক টাস্ক ধারণ করতে পারে, যা ম্যাক্রোর কার্যক্রম হিসেবে কাজ করবে।

১. Basic Example: Creating and Using a Macrodef

এটি একটি সহজ উদাহরণ যেখানে একটি macrodef টাস্ক ব্যবহার করে পুনঃব্যবহারযোগ্য একটি টাস্ক তৈরি করা হয়েছে যা কনসোলে বার্তা প্রিন্ট করবে।

Step 1: Create a Simple Macro (build.xml)

<project name="MacrodefExample" default="useMacro" basedir=".">
    
    <!-- Defining a macro -->
    <macrodef name="printMessage">
        <attribute name="message" />
        <sequential>
            <echo message="${message}" />
        </sequential>
    </macrodef>

    <target name="useMacro">
        <!-- Using the macro -->
        <printMessage message="Hello from the macro!" />
        <printMessage message="This is reusable!" />
    </target>

</project>

এখানে:

  • <macrodef name="printMessage">: একটি ম্যাক্রো তৈরি করা হয়েছে যার নাম printMessage
  • <attribute name="message" />: একটি ইনপুট প্যারামিটার message তৈরি করা হয়েছে, যা ম্যাক্রো ব্যবহার করার সময় পাস করা হবে।
  • <sequential>: ম্যাক্রোর কার্যক্রম। এখানে কেবল <echo> টাস্ক ব্যবহার করা হচ্ছে, যা message প্যারামিটারটি কনসোলে প্রিন্ট করবে।
  • <printMessage message="..."/>: এই টাস্কের মাধ্যমে ম্যাক্রোটি দুইবার ব্যবহার করা হচ্ছে, এবং প্রত্যেকবার একটি নতুন বার্তা প্রিন্ট করা হবে।

আউটপুট:

Hello from the macro!
This is reusable!

২. Macrodef with Multiple Tasks

এখানে একটি উদাহরণ দেওয়া হলো যেখানে একটি macrodef টাস্কের মধ্যে একাধিক টাস্ক রয়েছে, এবং এটি পুনঃব্যবহার করা হচ্ছে।

<project name="ComplexMacroExample" default="useMacro" basedir=".">
    
    <!-- Defining a complex macro -->
    <macrodef name="copyAndPrint">
        <attribute name="src" />
        <attribute name="dest" />
        <sequential>
            <copy file="${src}" tofile="${dest}" />
            <echo message="File copied from ${src} to ${dest}" />
        </sequential>
    </macrodef>

    <target name="useMacro">
        <!-- Using the macro with different parameters -->
        <copyAndPrint src="source.txt" dest="destination.txt" />
        <copyAndPrint src="config.xml" dest="config_backup.xml" />
    </target>

</project>

এখানে:

  • <macrodef name="copyAndPrint">: একটি copyAndPrint ম্যাক্রো তৈরি করা হয়েছে যা দুটি টাস্ককে একত্রে কার্যকর করে:
    • <copy>: একটি ফাইল কপি করার টাস্ক।
    • <echo>: কপি করার পর কনসোলে বার্তা প্রিন্ট করার টাস্ক।
  • <copyAndPrint src="source.txt" dest="destination.txt" />: এই ম্যাক্রোটি ব্যবহার করে দুটি আলাদা ফাইল কপি করা হচ্ছে এবং কনসোলে বার্তা প্রিন্ট করা হচ্ছে।

আউটপুট:

File copied from source.txt to destination.txt
File copied from config.xml to config_backup.xml

৩. Using Default Values for Macrodef Parameters

আপনি <macrodef> টাস্কের মধ্যে default মান ব্যবহার করতে পারেন, যা কোনো প্যারামিটার পাস না করলে স্বয়ংক্রিয়ভাবে ব্যবহার হবে।

<project name="MacrodefWithDefaultExample" default="useMacro" basedir=".">
    
    <!-- Defining a macro with default values -->
    <macrodef name="printGreeting">
        <attribute name="name" default="Guest" />
        <sequential>
            <echo message="Hello, ${name}!" />
        </sequential>
    </macrodef>

    <target name="useMacro">
        <!-- Using the macro without passing the 'name' parameter -->
        <printGreeting />
        <!-- Using the macro with a custom 'name' -->
        <printGreeting name="John" />
    </target>

</project>

এখানে:

  • default="Guest": যদি name প্যারামিটারটি পাস না করা হয়, তাহলে Guest হবে ডিফল্ট মান।
  • প্রথম <printGreeting /> টাস্কে name প্যারামিটার পাস না করলে ডিফল্ট Guest মান ব্যবহার হবে।
  • দ্বিতীয় <printGreeting name="John" /> টাস্কে name প্যারামিটার পাস করা হয়েছে, তাই সেখানে John ব্যবহার হবে।

আউটপুট:

Hello, Guest!
Hello, John!

৪. Macrodef with Nested Macros

Macrodef টাস্কের মধ্যে আপনি একাধিক ম্যাক্রোও ব্যবহার করতে পারেন, যাতে একটি ম্যাক্রো অন্য একটি ম্যাক্রোকে কল করতে পারে।

<project name="NestedMacroExample" default="useMacro" basedir=".">
    
    <!-- Defining the first macro -->
    <macrodef name="printHeader">
        <attribute name="title" />
        <sequential>
            <echo message="===== ${title} =====" />
        </sequential>
    </macrodef>

    <!-- Defining the second macro that calls the first -->
    <macrodef name="printContent">
        <attribute name="content" />
        <sequential>
            <printHeader title="Content Start" />
            <echo message="${content}" />
            <printHeader title="Content End" />
        </sequential>
    </macrodef>

    <target name="useMacro">
        <!-- Using the nested macro -->
        <printContent content="This is the body of the content." />
    </target>

</project>

এখানে:

  • <printHeader> ম্যাক্রোটি একটি হেডার বার্তা প্রিন্ট করবে।
  • <printContent> ম্যাক্রোটি <printHeader> ম্যাক্রোকে কল করে কনটেন্ট শুরু এবং শেষের হেডার প্রিন্ট করবে, এবং তার মধ্যে কনটেন্ট প্রিন্ট করবে।

আউটপুট:

===== Content Start =====
This is the body of the content.
===== Content End =====

সারাংশ

Macrodef Task হল Ant-এ একটি শক্তিশালী টুল যা আপনাকে reusable tasks তৈরি করতে সাহায্য করে। আপনি Ant স্ক্রিপ্টে বিভিন্ন টাস্ক বা কার্যক্রম একত্রিত করে একটি ম্যাক্রো তৈরি করতে পারেন এবং তারপর এটি একাধিক জায়গায় ব্যবহার করতে পারেন। এর মাধ্যমে আপনি বিল্ড প্রক্রিয়া আরও সংগঠিত এবং কার্যকরী করতে পারেন। Macrodef টাস্কের সাহায্যে:

  • Reusable tasks তৈরি করা যায়।
  • Multiple tasks একত্রে ব্যবহার করা যায়।
  • Default parameters ব্যবহার করা যায়।
  • Nested macros তৈরি করা যায়।

এটি Ant স্ক্রিপ্টে পুনঃব্যবহারযোগ্য কার্যক্রম তৈরি করার একটি চমৎকার উপায়।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion